package com.villaday.idf.util;

import java.security.MessageDigest;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;

/**
 * 检测各种输入是否符合规则
 * Created by admin on 2016/8/27.
 */
public class RegexUtil {

    /**
     * 此方法描述的是：检测用户名是否符合规则
     *
     * @return boolean
     */
    public static boolean checkLoginData(String userName) {
        if (userName != null && userName.length() > 0) {
            return userName.matches(Constant.Strings.RegexMobile);
        }
        return false;
    }

/*
    *//**
     * 此方法描述的是：检测密码是否符合规则
     *
     * @return boolean
     *//*
    public static boolean checkPassWordData(String userName) {
        if (userName != null && userName.length() > 0) {
            return userName.matches(Constant.validation.PassWordRegExp);
        }
        return false;
    }*/

    /**
     * 此方法描述的是：检测银行卡是否符合规则
     *
     * @return boolean
     */
//    public static boolean checkCardData(String userName) {
//        if (userName != null && userName.length() > 0) {
//            return userName.matches(Constant.Strings.BankCardRegExp);
//        }
//        return false;
//    }


    /**
     * 此方法描述的是：检测邮箱是否正确
     *
     * @return boolean
     */
    public static boolean checkRegexEmailData(String userName) {
        if (userName != null && userName.length() > 0) {
            return userName.matches(Constant.Strings.RegexEmail);
        }
        return false;
    }

    /**
     * 限制输入不能特殊的字符
     *
     * @param str
     * @return
     * @throws PatternSyntaxException
     */
    public static String stringFilter(String str) throws PatternSyntaxException {
        // 只允许字母、数字和汉字、以及中括号里面包含的字符
        String regEx = "[^a-zA-Z0-9\u4E00-\u9FA5-[，,.。？、@“”：；{}（）！~=+-‘’*]]";
        Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(str);
        return m.replaceAll("").trim();
    }


    /**
     * 此方法描述的是：身份证的检测
     */

//    public static boolean checkRegexCardData(String userName) {
//        if (userName != null && userName.length() > 0) {
//            if (userName.length() == 18) {
////                LogUtil.jLog().e(userName.matches(Constant.validation.RegularEighteenthRegExp));
//                return userName.matches(Constant.validation.RegularEighteenthRegExp);
//            }
//        }
//        return false;
//    }


    /**
     * MD5加密
     *
     * @author zmw
     * created at 2017/6/28 10:49
     */
    public static String getMD5(String str) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(str.getBytes());
            byte b[] = md.digest();

            int i;

            StringBuffer buf = new StringBuffer("");
            for (int offset = 0; offset < b.length; offset++) {
                i = b[offset];
                if (i < 0)
                    i += 256;
                if (i < 16)
                    buf.append("0");
                buf.append(Integer.toHexString(i));
            }
            str = buf.toString();
        } catch (Exception e) {
            e.printStackTrace();

        }
        return str;
    }

}
